Не стреляйте себе в ногу, используя LINQ

В статье я описал несколько примеров неочевидных моментов при использовании LINQ to SQL. Если вы гуру .NET, вам, возможно, покажется это скучным, остальным — добро пожаловать!
Начнем с такого примера. Допустим, у нас есть сущность «тип действия». У типа действия есть human-readable имя и системное имя — некий уникальный идентификатор, по которому с объектами этой сущности мы сможем работать из кода. Вот такая структура в виде объектов в коде:

class ActionType { 	public int id; 	public string systemname; 	public string name; } 

var ActionTypes = new ActionType[] { 	new ActionType { 		id = 1, 		systemname = "Registration", 		name = "Регистрация" 	}, 	new ActionType { 		id = 2, 		systemname = "LogOn", 		name = "Вход на сайт" 	}, 	new ActionType { 		id = 3, 		systemname = null, 		name = "Некоторый тип действия без системного имени" 	} }; 

Для такой же структуры с аналогичными данными создана таблица в БД и вспомогательные объекты для использования LINQ to SQL. Допустим, нам необходимо выяснить, существует ли у нас тип действия с системным именем NotExistingActionType. Вопрос в том, что будет выведено на экран после выполнения этих инструкций:

var resultForObjects = ActionTypes.All(actionType => actionType.systemname != "NotExistingActionType"); var context = new LinqForHabr.DataClasses1DataContext(); var resultForLTS = context.ActionTypes.All(actionType => actionType.SystemName != "NotExistingActionType");  Console.WriteLine("Result for objects: " + resultForObjects + "\nResult for Linq to sql: " + resultForLTS); Console.ReadLine();